<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" lang="zh" xml:lang="zh">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>核对表: 设计类</title>
<meta content="Checklist" name="uma.type">
<meta content="design_class" name="uma.name">
<meta content="设计类" name="uma.presentationName">
<meta content="Checklist" name="element_type">
<meta content="description" name="filetype">
<meta name="role" content="">
<link type="text/css" href="./../../../css/default.css" rel="StyleSheet">
<script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageResource.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageSection.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageSubSection.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageToolbar.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/contentPage.js"></script><script language="JavaScript" type="text/javascript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=[{view: "view:_LVCagP5WEdmAzesbYywanQ", path: ["_LVCagP5WEdmAzesbYywanQ", "_zRigkAILEdq-_NKqZM1EhA", "_qwxC8N7YEdmjRZts2c4ZjQ", "{DB21F5EF-810B-4994-B120-79FA8774FA9D}", "1.1028389988231071E-306"]}, {view: "view:_FCx1oN7CEdmsEI4YDGX2ag", path: ["_FCx1oN7CEdmsEI4YDGX2ag", "_f6_YwN7DEdmsEI4YDGX2ag", "_qwxC8N7YEdmjRZts2c4ZjQ", "{DB21F5EF-810B-4994-B120-79FA8774FA9D}", "1.1028389988231071E-306"]}, {view: "view:_FCx1oN7CEdmsEI4YDGX2ag", path: ["_FCx1oN7CEdmsEI4YDGX2ag", "_Jvt1cAIaEdqEutyfYo0quQ", "_jijhYAIaEdqEutyfYo0quQ", "_n7ZcgN7REdmjRZts2c4ZjQ", "{952A9CE9-D5A3-43AC-980D-0B9298F3872E}", "1.1028389988231071E-306"]}];
					contentPage.preload(imgPath, backPath, nodeInfo,  '', true, false, false);
					
					//override the subsection text
					contentPage.subSection.expandAllText = '展开所有检查项';
					contentPage.subSection.collapseAllText = '折叠所有检查项';					
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="1.1028389988231071E-306"></div>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td nowrap="true" class="pageTitle">核对表：设计类</td><td width="100%">
<div id="contentPageToolbar" align="right"></div>
</td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td class="pageTitleSeparator"><img height="1" title="" alt="" src="./../../../images/shim.gif"></td>
</tr>
</table>
<div class="overview">
<table cellpadding="0" cellspacing="0" border="0" width="97%">
<tr>
<td width="50"><img title="" alt="" src="./../../../images/checklist.gif"></td><td>
<table cellpadding="0" cellspacing="0" border="0" class="overviewTable">
<tr>
<td valign="top">此核对表有助于确保已对设计类正确建模。</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">关系</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr valign="top">
<th scope="row" class="sectionTableHeading">相关元素</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../core.base_rup/roles/rup_designer_BA8DE74E.html" guid="{DB21F5EF-810B-4994-B120-79FA8774FA9D}">设计人员</a>
</li>
<li>
<a href="./../../../core.base_rup/workproducts/rup_design_class_B33BD5E5.html" guid="{952A9CE9-D5A3-43AC-980D-0B9298F3872E}">设计类</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">主要描述</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr valign="top">
<td class="sectionTableSingleCell"><a id="XE_checkpoints__for_design_classes" name="XE_checkpoints__for_design_classes"></a><br />
<br /></td>
</tr>
</table>
</div>
<div class="sectionHeading">检查项</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr>
<td class="sectionTableCell">
<div class="stepHeading"> 概述</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><div style="MARGIN-LEFT: 2em">
    <ul>
        <li class="ck">
            类名明确反映它所扮演的角色。
        </li>
        <li class="ck">
            类的描述明确传达类的目的。
        </li>
        <li class="ck">
            类代表一个定义良好的抽象。
        </li>
        <li class="ck">
            类的属性和操作对于履行类的职责都是最根本的。
        </li>
        <li class="ck">
            每个类表示一小组一致且唯一的职责。
        </li>
        <li class="ck">
            类的职责是定义良好、明确陈述的，并与类的目的明确相关。
        </li>
        <li class="ck">
            每个类是相对自我包含的，并与其他类低耦合。
        </li>
        <li class="ck">
            类的职责的抽象级别一致（即，高级（应用级别）和低级（实施级别）职责不是混在一起的）。
        </li>
        <li class="ck">
            在同一继承层次结构中的类拥有唯一的类属性、操作和关系（即，它们继承所有公共的属性、操作和关系）。
        </li>
        <li class="ck">
            说明了类实例的完整生命周期。每个对象由一个或多个用例实现创建、使用或除去。
        </li>
        <li class="ck">
            类满足了由用例实现建立的行为需求。
        </li>
        <li class="ck">
            满足了需求规范中的类的所有需求。
        </li>
        <li class="ck">
            类的需求（如类描述和时序图的对象所反映）与类的状态机一致。
        </li>
        <li class="ck">
            类的所有职责是相关的，这样，类要存在于系统中，就不可能使用它的某些职责，而不使用它的其他职责。
        </li>
        <li class="ck">
            没有两个类在本质上有相同的目的。
        </li>
    </ul>
</div></td>
</tr>
</table>
</div>
<div class="stepHeading"> 泛化／专门化</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><div style="margin-left: 2em">
    <ul>
        <li class="ck">
            泛化关系层次结构是平衡的，因此不存在层次结构非常扁平或非常深的类。
        </li>
        <li class="ck">
            明显的共性反映在继承层次结构中。
        </li>
        <li class="ck">
            没有任何超类看上去是子类属性的合并。
        </li>
        <li class="ck">
            继承层次结构中没有具有不相关的属性的中间抽象类，示例包括继承树两边的重复子类。
        </li>
        <li class="ck">
            继承用于捕获公共设计抽象，而不主要用于实施考虑事项（即：复用代码位或类结构）。
        </li>
    </ul>
</div></td>
</tr>
</table>
</div>
<div class="stepHeading"> 命名约定</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><div style="margin-left: 2em">
    <ul>
        <li class="ck">
            类名指示目的。
        </li>
        <li class="ck">
            类名遵循在项目设计指南中指定的命名约定。
        </li>
    </ul>
</div></td>
</tr>
</table>
</div>
<div class="stepHeading"> 操作</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><div style="margin-left: 2em">
    <ul>
        <li class="ck">
            每个操作名都是描述性的和可理解的。
        </li>
        <li class="ck">
            状态机和操作是一致的。
        </li>
        <li class="ck">
            状态机和操作完整地描述类的行为。
        </li>
        <li class="ck">
            每个操作的参数在数量、名称和类型方面都是正确的。
        </li>
        <li class="ck">
            定义的每个操作的实施规范都是正确的。
        </li>
        <li class="ck">
            操作特征符符合目标编程语言的标准。
        </li>
        <li class="ck">
            每个操作至少由一个用例实现使用。
        </li>
    </ul>
</div></td>
</tr>
</table>
</div>
<div class="stepHeading"> 属性</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><div style="margin-left: 2em">
    <ul>
        <li class="ck">
            需要类的所有关系来支持类的某个操作。
        </li>
        <li class="ck">
            每个属性表示一个概念上的含义。
        </li>
        <li class="ck">
            每个属性名都是描述性的并正确传达它存储的信息。
        </li>
    </ul>
</div></td>
</tr>
</table>
</div>
<div class="stepHeading"> 关系</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><div style="margin-left: 2em">
    <ul>
        <li class="ck">
            聚集和关联的角色名描述关联和被关联的类之间的关系。
        </li>
        <li class="ck">
            关系的多重性是正确的。
        </li>
    </ul>
</div></td>
</tr>
</table>
</div>
<div class="stepHeading"> 状态机</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><div style="MARGIN-LEFT: 2em">
    <ul>
        <li class="ck">
            状态机尽可能简单，但仍能表达必需的行为。
        </li>
        <li class="ck">
            状态机不包含任何多余的状态或转移。
        </li>
        <li class="ck">
            状态机具有明确的环境。
        </li>
        <li class="ck">
            所有引用的对象对包含它的对象都是可见的。
        </li>
        <li class="ck">
            状态机是高效的，并在时间和资源最佳平衡（由它分派的操作定义）的条件下执行它的行为。
        </li>
        <li class="ck">
            状态机是可理解的。
        </li>
        <li style="LIST-STYLE-TYPE: none">
            <ul>
                <li class="ck">
                    状态和转移名称在系统领域环境中是可理解的。
                </li>
                <li class="ck">
                    状态名称表明正在等待或发生什么，而不是已经发生了什么。
                </li>
                <li class="ck">
                    状态和转移名称在状态机中是唯一的（虽然不是严格的要求，但在调试中它有助于实施唯一名称）。
                </li>
                <li class="ck">
                    状态的逻辑分组包含在组合状态中。
                </li>
                <li class="ck">
                    组合状态用于有效减少复杂度了吗？
                </li>
                <li class="ck">
                    转移标注反映转移的底层原因。
                </li>
                <li class="ck">
                    关于状态转移的代码片段，其详细代码不会超过 25 行；相反地，有效地使用函数来减少转移代码复杂度。
                </li>
                <li class="ck">
                    已检查状态机嵌套，确保嵌套深度不会太深而不可理解；对于大多数复杂行为，一级或两级子状态通常就足够了。
                </li>
            </ul>
        </li>
        <li class="ck">
            已用活动类代替了并发子状态；活动类几乎总是比并发子状态更好的备选方案并更易理解。
        </li>
        <li class="reactiveck">
            在实时系统中，已使用封装体表示逻辑控制线程。
        </li>
        <li class="ck">
            已说明了错误或维护状态。
        </li>
        <li class="ck">
            在扩展的状态变量的位置已使用了子状态；转移警戒条件测试几个变量来确定转移应出现的状态是没有根据的。
        </li>
        <li class="ck">
            状态机不同于流程图。
        </li>
        <li class="ck">
            状态机不是过度分解的，它由带单个子状态的嵌套的状态机组成。 在嵌套的子状态是占位符（用于未来的设计工作或划分子类）的情况下，倘若选择是有意的，这可能暂时可被接受。
        </li>
    </ul>
</div></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
<table cellpadding="0" cellspacing="0" border="0" class="copyright">
<tr>
<td class="copyright"><p>
    &copy; &nbsp;Copyright IBM Corp.&nbsp;1987, 2006. &nbsp;All Rights Reserved.
</p></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script language="JavaScript" type="text/javascript">
				contentPage.onload();
			</script>
</html>
